package com.developmentReformProject.service;

/***********************************************************************
 * name: 管理员服务类
 * Module:  AdminService.java
 * Author:  胡志鹏
 * Purpose: Defines the Interface AdminService
 ***********************************************************************/

import com.developmentReformProject.dto.AdminDto;
import com.developmentReformProject.dto.AdminQueryDto;
import com.developmentReformProject.dto.LogQueryDto;
import com.developmentReformProject.entity.Admin;
import com.developmentReformProject.entity.Enterprise;
import com.developmentReformProject.utils.PageUtil;

import java.util.*;

public interface AdminService {
    /**
     * 添加管理员
     *
     * @param admin
     * @return
     */
    String addAdmin(Admin admin);

    /**
     * 修改管理员信息
     *
     * @param
     * @return
     */
    String updateAdmin(int adminNo, Admin admin);

    /**
     * 通过管理员编号删除管理员
     *
     * @param adminNo
     * @return
     */
    String deleteAdmin(Integer adminNo);

    /**
     * 通过管理员编号批量删除管理员
     *
     * @param
     * @return
     */
    String deleteAdminBatch(int[] adminNos);

    /**
     * 通过管理员id查找管理员
     *
     * @param admin
     * @return
     */
    AdminDto queryAdminById(Integer admin);

    /**
     * 通过权限查找管理员
     *
     * @param adminPower
     * @return
     */
    List<AdminDto> queryAdminByPower(int adminPower);

    /**
     * 删除日志
     *
     * @return
     */
    String deleteLog();

    /**
     * 通过id查找日志
     *
     * @param logId
     * @return
     */
    LogQueryDto queryLogById(Integer logId);

    /**
     * 通过访问日期查找日志
     *
     * @param visitDate
     * @return
     */
    List<LogQueryDto> queryLogByVisitDate(Date visitDate);

    /**
     * 通过操作类型查找日志
     *
     * @param operationType
     * @return
     */
    List<LogQueryDto> queryOperationByType(String operationType);

    /**
     * 审核项目
     *
     * @param projectId
     * @return
     */
    String toExamine(Integer projectId);

    /**
     * 管理员登录
     *
     * @param adminAccountNumber
     * @param adminPassword
     * @return
     */
    String loginAdmin(String adminAccountNumber, String adminPassword);

    /**
     * 管理员注销
     * @param adminDto
     * @return
     */
    String logoutAdmin(AdminDto adminDto);

    /**
     * 管理员更改密码
     *
     * @param
     * @return
     */
    String updatePasswordAdmin(String accountNumber,String newPassword,String oldPassword);

    /**
     * 查看所有企业表
     *
     * @param enterpriseId
     * @return
     */
    Enterprise selectEnterpriseAdmin(Integer enterpriseId);

    /**
     * 修改企业信息
     *
     * @param enterprise
     * @return
     */
    String updateEnterpriseAdmin(Enterprise enterprise);

    /**
     * 删除企业信息
     *
     * @param enterpriseId
     * @return
     */
    String deleteEnterpriseAdmin(Integer enterpriseId);

    /**
     * 批量删除企业信息
     *
     * @param enterpriseIds
     * @return
     */
    String deleteEnterpriseBatchAdmin(int[] enterpriseIds);

    /**
     * 查询所有在职管理员
     *
     * @return
     */
    String queryAllStateAdmin();

    /**
     * 动态分页查询
     * @param adminQueryDto
     * @return
     * @throws Exception
     */
    PageUtil<Admin> pageList(AdminQueryDto adminQueryDto) throws Exception;
    public Admin queryByUsername(String username);
    PageUtil<Admin> cleanAdmin(AdminQueryDto adminQueryDto) throws Exception;
}
